home *** CD-ROM | disk | FTP | other *** search
/ Java Developer's Companion / Java Developer's Companion.iso / documentation / tutorial / java / threads / example-1.1 / BidirectionalBubbleSortAlgorithm.java next >
Encoding:
Text File  |  1997-07-13  |  2.6 KB  |  86 lines

  1. /*
  2.  * Copyright (c) 1995-1997 Sun Microsystems, Inc. All Rights Reserved.
  3.  *
  4.  * Permission to use, copy, modify, and distribute this software
  5.  * and its documentation for NON-COMMERCIAL purposes and without
  6.  * fee is hereby granted provided that this copyright notice
  7.  * appears in all copies. Please refer to the file "copyright.html"
  8.  * for further important copyright and licensing information.
  9.  *
  10.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
  11.  * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
  12.  * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
  13.  * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
  14.  * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
  15.  * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
  16.  */
  17. /*
  18.  * @(#)BidirectionalBubbleSortAlgorithm.java    1.6f 95/01/31 James Gosling
  19.  *
  20.  * Copyright (c) 1994 Sun Microsystems, Inc. All Rights Reserved.
  21.  *
  22.  * Permission to use, copy, modify, and distribute this software
  23.  * and its documentation for NON-COMMERCIAL purposes and without
  24.  * fee is hereby granted provided that this copyright notice
  25.  * appears in all copies. Please refer to the file "copyright.html"
  26.  * for further important copyright and licensing information.
  27.  *
  28.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
  29.  * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
  30.  * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
  31.  * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
  32.  * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
  33.  * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
  34.  */
  35.  
  36. /**
  37.  * A bi-directional bubble sort demonstration algorithm
  38.  * SortAlgorithm.java, Thu Oct 27 10:32:35 1994
  39.  *
  40.  * @author James Gosling
  41.  * @version     1.6f, 31 Jan 1995
  42.  */
  43. class BidirectionalBubbleSortAlgorithm extends SortAlgorithm {
  44.     void sort(int[] a) throws Exception {
  45.     int j;
  46.     int limit = a.length;
  47.     int st = -1;
  48.     while (st < limit) {
  49.         boolean flipped = false;
  50.         st++;
  51.         limit--;
  52.         for (j = st; j < limit; j++) {
  53.         if (stopRequested) {
  54.             return;
  55.         }
  56.         if (a[j] > a[j + 1]) {
  57.             int T = a[j];
  58.             a[j] = a[j + 1];
  59.             a[j + 1] = T;
  60.             flipped = true;
  61.             pause(st, limit);
  62.         }
  63.         }
  64.         if (!flipped) {
  65.         return;
  66.         }
  67.         for (j = limit; --j >= st;) {
  68.         if (stopRequested) {
  69.             return;
  70.         }
  71.         if (a[j] > a[j + 1]) {
  72.             int T = a[j];
  73.             a[j] = a[j + 1];
  74.             a[j + 1] = T;
  75.             flipped = true;
  76.             pause(st, limit);
  77.         }
  78.         }
  79.         if (!flipped) {
  80.         return;
  81.         }
  82.     }
  83.     pause(st, limit);
  84.     }
  85. }
  86.